#ifndef FERMAT_LIBHTTP_HTTPMESSAGE_H_
#define FERMAT_LIBHTTP_HTTPMESSAGE_H_
#include <fermat/net/socket_address.h>

namespace fermat {
namespace libhttp {
class HttpMessage {
public:
	HttpMessage();
	~HttpMessage();
	HttpMessage(const HttpMessage &rhs);
	HttpMessage & operator=(const HttpMessage &rhs);

	void setIsChunked(bool chunked);
	bool getIsChunked() const;

	void setIsUpgrade(bool upgrade);

	bool getIsUpgrade() const;

	void setClientAddress(fermat::net::SocketAddress &addr);

	const fermat::net::SocketAddress &getClientAddress() const;

	const std::string &getClientIp() const;

	const std::string &getClientPort()  const;

	void setDstAddress(fermat::net::SocketAddress &addr);

	const fermat::net::SocketAddress& getDstAddress() const;

	const std::string& getDstIp() const;

	const std::string& getDstPort() const;

	void setMethod(HttpMethod m);

	void setMethod(const std::string &method);

	HttpMethod getMethod() const;

	const HttpUrl &setUrl(const std::string &url);

	std::string getUrl() const;

	std::string getPath() const;

	std::string getQueryString() const;

	void setStatusMessage(const std::string &msg);

	const std::string& getStatusMessage();

	HttpHeaders& getHeaders();
	const HttpHeaders& getHeaders() const;

private:

};
}
}
#endif